package com.youth.youthservice.service;

import com.youth.ClientEntity.OrderCourse;
import com.youth.commonutils.R;
import com.youth.youthservice.entity.EduCourse;
import com.youth.youthservice.entity.announcement.Course;
import com.youth.youthservice.entity.chapter.ChapterVo;
import com.youth.youthservice.entity.vo.CourseVo.CourseInfoVo;
import com.youth.youthservice.entity.vo.CourseVo.CourseQuery;
import com.baomidou.mybatisplus.extension.service.IService;
import com.youth.youthservice.entity.vo.CourseVo.CourseQueryVo;
import com.youth.youthservice.entity.vo.CourseVo.CourseWebVo;

import java.util.ArrayList;
import java.util.List;

/**
 * <p>
 * 课程 服务类
 * </p>
 *
 * @author huangqicai,CM
 * @since 2023-4-30
 */
public interface EduCourseService extends IService<EduCourse> {

    ArrayList<Course> selectCourse();

    /*根据课程id去查询订单里面的课程信息，用于远程调用*/
    OrderCourse orderCourse(String courseId);

    /* 根据搜索参数（可以为null）查询课程列表  供后台修改*/
    R listCourseByPage(Long pageNum,Long pageSize,CourseQuery courseQuery);

    /*根据前台填写的课程参数初步构建课程信息*/
    R saveCourseInfo(CourseInfoVo courseInfoVo);

    /*根据id查找课程信息，用于课程更新和发布课程时上一页回滚*/
    R getCourseInfoById(String id);

    /*根据id更新课程信息*/
    R updateCourseInfo(CourseInfoVo courseInfoVo);

    /*供课程发布页面展示待发布课程信息*/
    R getPublishCourseInfo(String id);

    /*删除课程，同时删除课程下的章节和小节*/
    R delete(String courseId);

    /*查询所有的课程信息进行显示-远程huang*/
    R getCourseInfoList();

    /*前台课程列表*/
    R listCourse(Long pageNum, Long pageSize, CourseQueryVo courseQuery);

    /*获取课程简介信息和对应课程讲师信息*/
    CourseWebVo getDetailById(String courseId);

    /*获取当前课程的章节信息*/
    List<ChapterVo> getChapterList(String courseId);

    /*根据讲师id查询课程列表*/
    List<EduCourse> selectByTeacherId(String teacherId);

    /*根据课程名称查询课程id*/
    List<String> getCourseIdByCourseName(String courseName);
}
